import time

from django.shortcuts import render, redirect, HttpResponse
from django.http import JsonResponse

from app01.utils.form.project_form import ProjectModelForm
from app01.utils.cos import create_bucket
from app01 import models

def project_list(request):
    """ 项目展示 """
    if request.method == "GET":
        """ 
        1.从数据库中获取两部分数据
            我创建的所有项目：已星标、未星标
            我参与的所有项目：已星标、未星标
        2.提取已星标
            列表=循环【我创建的所有项目】+【我参与的所有项目】把已星标的数据提取

        得到三个列表：星标、创建、参与
        """
        project_dict = {"star": [], "my": [], "join": []}

        my_project_list = models.Project.objects.filter(creator=request.tracer.user)
        for row in my_project_list:
            if row.star:
                project_dict["star"].append({"value": row, "type": 'my'})
            else:
                project_dict["my"].append(row)

        join_project_list = models.ProjectUser.objects.filter(join_user=request.tracer.user)
        for item in join_project_list:
            if item.star:
                project_dict["star"].append({"value": item, "type": 'join'}) # 确保与上面循环对象一致
            else:
                project_dict["join"].append(item.project)
        
        form = ProjectModelForm(request)
        return render(request, "project_list.html", {"form": form, "project_dict": project_dict})
    
    form = ProjectModelForm(request, data=request.POST)
    if form.is_valid():
        # 1.为项目创建桶
        bucket = "{}-{}-1320997346".format(request.tracer.user.usermail.rsplit("@", 1)[0], str(int(time.time())))
        region = "ap-chengdu"
        create_bucket(bucket, region)


        # 2.把桶和区域写入数据库
        form.instance.bucket = bucket
        form.instance.region = region
        
        # 验证通过: 项目名、颜色、描述 + creator
        form.instance.creator = request.tracer.user

        form.save()

        return JsonResponse({
        "status": True, 
    })

    return JsonResponse({
        "status": False, 
        "error": form.errors
    })

def project_star(request, project_type, project_id):
    """ 添加星标 """
    if project_type == "my":
        models.Project.objects.filter(id=project_id,creator=request.tracer.user).update(star=True)
        return redirect('/project/list/')
    if project_type == "join":
        models.Project.objects.filter(project_id=project_id,user=request.tracer.user).update(star=True)
        return redirect('/project/list/')

    return HttpResponse("请求错误")

def project_unstar(request, project_type, project_id):
    """ 取消星标 """
    if project_type == "my":
        models.Project.objects.filter(id=project_id,creator=request.tracer.user).update(star=False)
        return redirect('/project/list/')
    if project_type == "join":
        models.Project.objects.filter(project_id=project_id,user=request.tracer.user).update(star=False)
        return redirect('/project/list/')

    return HttpResponse("请求错误")



